5.4.2. 控制电路

控制电路用于整个系统。在处理器上,它们驱动程序指令对程序数据的执行。它们还控制将值加载和存储到不同级别的存储(在寄存器、缓存和 RAM 之间),并控制系统中的硬件设备。就像算术和逻辑电路一样,实现复杂功能的控制电路是通过组合更简单的电路和逻辑门来构建的。

多路复用器 (MUX) 是选择多个值之一的控制电路的示例。CPU 可以使用多路复用器电路来选择从哪个 CPU 寄存器读取指令操作数值。

N 路多路复用器具有一组 N 个输入值和从其中一个输入中选择的单个输出值。附加输入值 选择 (S) 对其 N 个输入中的哪一个被选为其输出进行编码。

最基本的双向 MUX 在两个 1 位输入 A 和 B 之间进行选择。双向多路复用器的选择输入是单个位:如果 S 输入为 1,它将选择 A 作为输出;如果为 0,它将选择 B 作为输出。双向 1 位多路复用器的真值表如下所示。选择位 (S) 的值选择 A 或 B 的值作为 MUX 输出值。

表 1. 1 位多路复用器的真值表

ABSout
0000 (B’s value)
0101 (B’s value)
1000 (B’s value)
1101 (B’s value)
0010 (A’s value)
0110 (A’s value)
1011 (A’s value)
1111 (A’s value)

图 1 显示了单位输入的双向多路复用器电路。

1 bit mux

图 1. 双向 1 位多路复用器电路。信号输入 (S) 的值用于选择其两个输入(A 或 B)中的哪一个作为电路的输出值:当 S 为 1 时,选择 A;当 S 为 0 时,选择 B。

图 2 显示了多路复用器如何在 S 输入值为 1 的情况下选择 A 的输出。例如,假设输入值为 A 为 1、B 为 0 和 S 为 1。S 在与 B(0 AND B)一起发送到顶部与门之前被取反,导致顶部与门的输出值为 0。S 与 A 一起输入到底部与门,得到 (1 AND A),其计算结果为底部与门输出的 A 值。A 的值(在我们的例子中为 1)和来自顶部与门的 0 作为输入输入到或门,导致输出 (0 OR A)。换句话说,当 S 为 1 时,MUX 选择 A 的值作为其输出(在我们的例子中 A 的值为 1)。 B 的值不会影响 MUX 的最终输出,因为当 S 为 1 时,顶部 AND 门的输出始终为 0。

when S is 1, the mux chooses A for its output

图 2. 当 S 为 1 时,双向 1 位多路复用器电路选择(输出)A。

图 3 显示了当 S 输入值 0 选择 B 的输出时,通过多路复用器的路径。如果我们考虑与上述示例相同的 A 和 B 输入,但将 S 更改为 0,则 0 的否定将输入到顶部与门,从而从顶部与门输出 (1 AND B) 或 B 的值。底部与门的输入为 (0 AND A),从底部与门输出 0。因此,或门的输入值为 (B OR 0),其计算结果为 B 的值作为 MUX 的输出(在我们的示例中,B 的值为 0)。

when S is 0, the mux chooses B for its output

图 3. 当 S 为 0 时,双向 1 位多路复用器电路选择(输出)B。

双向 1 位 MUX 电路是构建双向 N 位 MUX 电路的基础模块。例如,图 4 显示了由四个 1 位双向 MUX 电路构建的双向 4 位 MUX。

4 bit 2way-mux

图 4. 由四个双向 1 位多路复用器电路构成的双向 4 位多路复用器电路。单个信号位 S 选择 A 或 B 作为输出。

N 路多路复用器选择 N 个输入之一作为输出。它所需的 MUX 电路与双向 MUX 略有不同,并且需要 log2(N) 位作为其选择输入。需要额外的选择位是因为使用 log2(N) 位可以编码 N 个不同的值,每个值用于选择 N 个输入中的每一个。 log2(N) 选择位的每个不同排列都与 N 个输入值之一一起输入到与门,从而选出一个 MUX 输入值作为 MUX 输出。图 5 展示了一个 1 位四路 MUX 电路的示例。

N-way mux

图 5. 四路多路复用器电路具有四个输入和两个 (log(4)) 选择位,用于编码多路复用器应输出四个输入中的哪一个。

四路 MUX 电路使用四个三输入与门和一个四输入或门。通过将多个两输入与(和或)门串联在一起,可以构建多输入版本的门。例如,三输入与门由两个两输入与门构建,其中第一个与门取两个输入值,第二个与门取第三个输入值和第一个与门的输出:(x AND y AND z) 等同于 ((x AND y) AND z)。

要了解四路 MUX 电路的工作原理,请考虑 S 输入值为 2(二进制为 0b10),如 图 6 所示。顶部与门获取输入 (NOT(S0) AND NOT(S1) AND A) 或(1 AND 0 AND A),导致顶部与门输出 0。第二个与门获取输入值(0 AND 0 AND B),导致输出 0。第三个与门获取输入值 (1 AND 1 AND C),导致输出 C 的值。最后一个与门获取(0 AND 1 AND D),导致输出 0。或门有输入 (0 OR 0 OR C OR 0),导致 MUX 输出 C 的值(S 值为 2 选择 C)。

4-way mux circuit selects C as output when S is 2 (0b10)

图 6. 当选择输入 S 为 2 (0b10) 时,四路多路复用器电路选择 C ​​作为输出。

解复用器和解码器是控制电路的另外两个例子。解复用器 (DMUX) 是多路复用器的反面。多路复用器选择 N 个输入之一,而解复用器选择 N 个输出之一。DMUX 接受单个输入值和一个选择输入,并具有 N 个输出。根据 S 的值,它将输入值发送到其 N 个输出之一(输入的值被路由到 N 个输出线之一)。DMUX 电路通常用于选择 N 个电路之一来传递值。解码器电路接受编码输入并根据输入值启用多个输出之一。例如,具有 N_ 位输入值的解码器电路使用该值来启用(设置为 1)其 2N 条输出线中的一条(与 N_ 位值的编码相对应的输出线)。 图 7 显示了一个双向 1 位 DMUX 电路的示例,其选择输入值选择其两个输出中的哪一个获得输入值 A。它还显示了一个 2 位解码器电路的示例,其输入位决定将四个输出中的哪一个设置为 1。还显示了两个电路的真值表。

2-way 1-bit dmux and 2-bit Decodercircuit

图 7. 双向 1 位解复用器和 2 位解码器及其真值表。